package exception;
/*
java异常处理机制
java将异常进行类分类：
java.lang.Throwable是所有异常的顶级超类
下面派生了两个子类类型：
Error：这类错误表示系统级别错误，是不可恢复的错误，程序出现后就会停止
       java异常处理机制不处理Error
Exception：程序级别的异常（“意外，例外"),是可以通过异常处理机制恢复错误
java异常处理机制中的：
try{
     代码片段
   }catch（XXXException e{
      当try语句块中出现XXXEception的补救措施
      }
 */
public class TryCatchDemo {
    public static void main(String[] args) {
        System.out.println("程序开始了...");
        try {
            //String line=null;
            //String line="";
            String line = "abc";
            //出现空指针，如果没有异常处理机制就会意外终止（程序到这里就结束了）
            System.out.println(line.length());
            System.out.println(line.charAt(0));
            System.out.println(Integer.parseInt(line));
            //integer.parseint意思是把整形数据integer转换成基本数据类型int
            //try语句块中如果出现了异常，那么错误代码以下的内容都不执行
            System.out.println("!!!!!!!");
            /*
            try语句块不出现异常时，catch块不执行
            }catch（NullPointerException e){
               //针对try中出现空指针后解决办法
               Sy...ln("出现了空指针并解决了“）
               //针对try中出现的不同异常有不同处理方式时，可以分别catch
             }catch(StringIndexOutofBoundsException e){
                 S...ln("出现了下标越界，并解决了“）；
               }
                 //当多个异常具有相同处理方式时，可以合并到一个catch进行处理
             */
        }catch(NumberFormatException|StringIndexOutOfBoundsException e){
            System.out.println("出现空指针或下标越界，并解决了");
        } catch (Exception e) {
            System.out.println("反正就是出了个错");
        }
        System.out.println("程序结束了！");
    }
}
